package ossRW

import (
	"bytes"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"mime/multipart"
)

// 简单文件上传。。randName里需要包含上传的路径
func OssSimpleUpload(file *multipart.FileHeader, randName string) error {
	// 获取存储空间。
	bucket, err := OssClient.Bucket(OssBucketName)
	if err != nil {
		fmt.Println("Error:", err)
	}

	// 指定存储类型为标准存储，缺省也为标准存储。
	//storageType := ossRW.ObjectStorageClass(ossRW.StorageStandard)

	// 指定访问权限为公共读，缺省为继承bucket的权限。
	//objectAcl := ossRW.ObjectACL(ossRW.ACLPublicRead)

	// 上传字符串。
	//err = bucket.PutObject("<yourObjectName>", strings.NewReader("yourObjectValue"), storageType, objectAcl)

	// 指定是否覆盖同名文件。
	// 不指定oss.ForbidOverWrite时，默认覆盖同名Object。
	// 指定oss.ForbidOverWrite为false时，表示允许覆盖同名Object。
	// 指定oss.ForbidOverWrite为true时，表示禁止覆盖同名Object，如果同名Object已存在，程序将报错。
	forbidWrite := oss.ForbidOverWrite(true)

	open, openerr := file.Open()
	if openerr != nil {
		return openerr
	}

	puterr := bucket.PutObject(randName, open, forbidWrite)
	if puterr != nil {
		return puterr
	}
	return nil
}

func OssUploadByteData(fileString *[]byte, fileName string) (err error) {
	bucket, err := OssClient.Bucket(OssBucketName)
	if err != nil {
		fmt.Println("Error:", err)
	}
	//reader := strings.NewReader(*fileString)
	reader := bytes.NewReader(*fileString)
	err = bucket.PutObject(fileName, reader, oss.ForbidOverWrite(false))
	return
}
